package dao;

import java.util.ArrayList;
import java.util.List;
import model.Emprestimo;

public class EmprestimoDAO extends BaseDAO<Emprestimo> {
	
    private static EmprestimoDAO instancia;
    private static List<Emprestimo> listaEmprestimo = null;

    /**
     * Método executado para garantir a existência de apenas uma instância dessa classe (Singleton).
     * 
     * @return uma instância da classe EmprestimoDAO 
     * @author Zeno
     * 
     */
    public static EmprestimoDAO getInstance() {
        if (instancia == null) {
            instancia = new EmprestimoDAO();
            listaEmprestimo = new ArrayList<Emprestimo>();
        }
        return instancia;
    }

    /**
     * Método executado para incluir determinado emprestimo na lista de emprestimos.
     * 
     * @param emprestimo
     * @throws Exception
     * @author Zeno
     * 
     */
    @Override
    public void incluir(Emprestimo emprestimo) throws Exception {
        listaEmprestimo.add(emprestimo);
    }

    /**
     * Método executado para remover o antigo emprestimo e adicionar o emprestimo alterado novamente na lista.
     * 
     * @param antigoEmpregado que é o emprestimo que será removido
     * @param novoEmpregado que é o emprestimo que será adicionado
     * @throws Exception
     * @author Zeno
     * 
     */
    @Override
    public void alterar(Emprestimo antigoEmprestimo, Emprestimo novoEmprestimo) throws Exception {
        listaEmprestimo.remove(antigoEmprestimo);
        listaEmprestimo.add(novoEmprestimo);
    }

    /**
     * Método executado para excluir determinado emprestimo na lista de emprestimos.
     * 
     * @param emprestimo
     * @throws Exception
     * @author Zeno
     * 
     */
    @Override
    public void excluir(Emprestimo emprestimo) throws Exception {
        listaEmprestimo.remove(emprestimo);
    }

    /**
     * Método executado para listar todos os empregados.
     * 
     * @return Lista de emprestimos
     * @throws Exception
     * @author Zeno
     * 
     */
    @Override
    public List<Emprestimo> listar() throws Exception {
        return listaEmprestimo;
    }

    /**
     * Método executado para retornar um empregado dado seu identificador.
     * 
     * @param id
     * @return emprestimo
     * @throws Exception
     * @author Zeno
     * 
     */
    public Emprestimo consultar(Long id) throws Exception {
        return listaEmprestimo.get(id.intValue());
    }
}
